昨日我們談到random forest演算法的步驟,忘記的同學可以經由上一篇的連結去複習一下random forest步驟的過程,在這裏就不在贅述。
今日我們要來談random forest的實作程式碼與補充decision tree的程式碼。
from sklearn.ensemble import RandomForestClassifier
forest = RandomForestClassifier(
criterion="gini", n_estimators=25, random_state=1, n_jobs=2
)
forest.fit(X_train, y_train)
forest.predict(X_train)
forest.score(X_train, y_train)
RandomForestClassifier屬於sklearn的ensemble類別。sklearn是機器學習常用的程式套件庫library,之前我們有提到random forest屬於ensemble boosting學習的一種。
criterion :與decision tree一樣,用來選擇度量random forest的標準,同decision tree 有gini/entropy 可以選擇,
這裡我們選gini。
n_estimators:表示樹的棵數,這裡是選25棵。
n_jobs :是使用電腦多核cpu 的平行運算之cpu數量,這裡是取2個cpu。
import numpy as np
def gini(p):
#是男生的機率p X 為女生的機率 (1-p) + 不是男生的機率1-p X 不是女生的機率 (1- (1 - p))
return p * (1 - p) + (1 - p) * (1 - (1 - p))
def entropy(p):
return -p * np.log2(p) - (1 - p) * np.log2((1 - p))
這裡我們是以二元分類的範例,可以期待看一下明天day11的logistic regression會更清楚,這裡是以day3讓電腦預測由提供的身高體重資料預測是男生的機率為1,女生的機率為1-p,嘗試按照day7所提entropy與gini不純度的定義,所寫的函數,忘記的同學可以往前翻閱一下。其中的np為python的資料分析套件numpy,就是numberic python的套件,由名稱可知是處理關於數字的功能。
這裡在補充說明一下熵entrop這個名詞的作用是作為混亂程度的度量,同學第一次看到會感到陌生,可以經由wiki,去了解一下這個名詞。同樣的gini不純度,
也可以由
百度,這裡有詳細的介紹去了解。
明天我們將會談論logistic regression的起源,數學式,程式碼等,敬請期待。
未來6日談論的內容如下:
day15_ML演算法:迴歸 (regression) (1/2)
day16_ML演算法:迴歸 (regression) (2/2)